package com.syni.mdd.sjb.common.component.mybatis.community.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 企业微信员工信息表
 * </p>
 *
 * @author lcc
 * @since 2021-02-25
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SjbQywxCompanyUser implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 主键Id
     */
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 数据宝用户id，对应dxsh_app_user_info表主键
     */
    private Integer sjbUserId;

    /**
     * 登录用户的类型：1.创建者 2.内部系统管理员 3.外部系统管理员 4.分级管理员 5.成员
     */
    private String userType;

    /**
     * 登录用户的userid，登录用户在通讯录中时返回
     */
    private String userid;

    /**
     * 全局唯一。对于同一个服务商，不同应用获取到企业内同一个成员的open_userid是相同的，最多64个字节。 登录用户在通讯录中返回
     */
    private String openUserid;

    /**
     * 登录用户的名字，登录用户在通讯录中时返回
     */
    private String name;

    /**
     * 	登录用户的头像，登录用户在通讯录中时返回
     */
    private String avatar;

    /**
     * 授权方企业信息
     */
    private String corpInfo;

    /**
     * 授权方企业id
     */
    private String corpid;

    /**
     * 应用权限信息：{agentid:"应用id",auth_type:"	该管理员对应用的权限：1.管理权限，0.使用权限"}
     */
    private String agent;

    /**
     * 手机号码，第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
     */
    private String mobile;

    /**
     * 成员所属部门id列表，仅返回该应用有查看权限的部门id;格式：["1","2"]
     */
    private String department;

    /**
     * 部门内的排序值，默认为0。数量必须和department一致，数值越大排序越前面。值范围是[0, 2^32)
     */
    private String departOrder;

    /**
     * 职务信息；
     */
    private String position;

    /**
     * 性别。0表示未定义，1表示男性，2表示女性
     */
    private String gender;

    /**
     * 	邮箱，第三方仅通讯录应用可获取
     */
    private String email;

    /**
     * 	头像缩略图url。第三方仅通讯录应用可获取
     */
    private String thumbAvatar;

    /**
     * 表示在所在的部门内是否为上级。；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取；格式：["1","0"]
     */
    private String isLeaderInDept;

    /**
     * 座机
     */
    private String telephone;

    /**
     * 	别名
     */
    private String alias;

    /**
     * 样例：{"attrs":[{"type": 0,"name": "文本名称","text": {"value": "文本"}}]}
     */
    private String extattr;

    /**
     * 	激活状态: 1=已激活，2=已禁用，4=未激活，5=退出企业。
     */
    private String status;

    /**
     * 员工个人二维码，扫描可添加为外部联系人
     */
    private String qrCode;

    /**
     * 对外职务，非空时优先取该值
     */
    private String externalPosition;

    /**
     * 地址。
     */
    private String address;

    /**
     * 主部门
     */
    private String mainDepartment;
    /**
     * 同步时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime syncTime;
    /**
     * 成员对外属性
     */
    private String externalProfile;


    public static final String ID = "id";

    public static final String SJB_USER_ID = "sjb_user_id";

    public static final String USER_TYPE = "user_type";

    public static final String USERID = "userid";

    public static final String OPEN_USERID = "open_userid";

    public static final String NAME = "name";

    public static final String AVATAR = "avatar";

    public static final String CORP_INFO = "corp_info";

    public static final String CORP_ID = "corpid";

    public static final String AGENT = "agent";

    public static final String MOBILE = "mobile";

    public static final String DEPARTMENT = "department";

    public static final String ORDER = "order";

    public static final String POSITION = "position";

    public static final String GENDER = "gender";

    public static final String EMAIL = "email";

    public static final String THUMB_AVATAR = "thumb_avatar";

    public static final String IS_LEADER_IN_DEPT = "is_leader_in_dept";

    public static final String TELEPHONE = "telephone";

    public static final String ALIAS = "alias";

    public static final String EXTATTR = "extattr";

    public static final String STATUS = "status";

    public static final String QR_CODE = "qr_code";

    public static final String EXTERNAL_POSITION = "external_position";

    public static final String ADDRESS = "address";

    public static final String MAIN_DEPARTMENT = "main_department";

    public static final String EXTERNAL_PROFILE = "external_profile";

    public static final String SYNC_TIME = "sync_time";

}
